﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MaxFromMinInColumn
{

    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Введите количество строк массива");
            int rows = Int32.Parse(Console.ReadLine());
            Console.WriteLine("Введите количество столбцов массива");
            int columns = Int32.Parse(Console.ReadLine());
            Console.WriteLine("____________________________________________");
            int[,] testArray = CreateRandArray(rows, columns, 1, 20);

            PrintArray(testArray);
          //  MaxFromMinInColumn(testArray);
          SumInColumnAndRow(testArray);
            Console.ReadKey();



        }
        static int[,] CreateRandArray(int rowCount, int columnCount, int minValue, int maxValue)
        {
            int[,] newArray = new int[rowCount, columnCount];
            Random rnd = new Random();

            for (int i = 0; i < rowCount; i++)
            {
                for (int j = 0; j < columnCount; j++)
                {
                    newArray[i, j] = rnd.Next(minValue, maxValue);

                }

            }
            return newArray;


        }
        static void PrintArray(int[,] arrayForPrint)
        {
            for (int i = 0; i < arrayForPrint.GetLength(0); i++)
            {
                for (int j = 0; j < arrayForPrint.GetLength(1); j++)
                {
                    Console.Write("{0} \t ", arrayForPrint[i, j]);
                }
                Console.WriteLine();

            }

        }
        // 1) Создается массив из n строк и m столбцов.
        //Найти: максимальный из наименьших элементов столбцов.
        static void MaxFromMinInColumn(int[,] array)
        {

            int max=Int32.MaxValue;
            int[] minInColumnArray = new int[array.GetLength(1)];

            for (int i = 0; i < array.GetLength(1); i++)
            {
                max = Int32.MaxValue;
                for (int j = 0; j < array.GetLength(0); j++)
                {
                    if (array[j,i] < max)
                 
                        max= array[j, i];
                 
                }
                minInColumnArray[i] = max;
                Console.WriteLine(" Минимимум в колонке {0} число {1}",i, max);
        
            }

            Console.WriteLine("Макс из минимумов колонок {0}", minInColumnArray.Max());
        }
        // 2) Создать двумерный массив, заполненный случайными числами.После заполнения — показать 
        //  заполненный массив на экран и посчитать сумму элементов отдельно в каждом столбце и каждой строке.
        static void SumInColumnAndRow(int[,] array)
        {

            int columnSum;
            int rowSum;
            int[] columnSumArray = new int[array.GetLength(1)];
            int[] rowSumArray = new int[array.GetLength(0)];


            for (int i = 0; i < array.GetLength(0); i++)
            {
                rowSum = 0;
             
                for (int j = 0; j < array.GetLength(1); j++)
                {
                 
                    rowSum = rowSum + array[i, j];
                   
                }
                
                rowSumArray[i] = rowSum;
               
            }
            foreach(int el in rowSumArray)
            Console.WriteLine(" Сумма элементов в строке {0} составляет {1}", Array.IndexOf(rowSumArray,el)+1, el);


            for (int i = 0; i < array.GetLength(1); i++)
            {
              
                columnSum = 0;
                for (int j = 0; j < array.GetLength(0); j++)
                {

                    columnSum = columnSum + array[j, i];
                  
                }

                columnSumArray[i] = columnSum;

            }
            foreach (int el in columnSumArray)
                Console.WriteLine(" Сумма элементов в столбце {0} составляет {1}", Array.IndexOf(columnSumArray, el) + 1, el);

        }
        //3) Заполнить двумерный массив случайными числами от 10 до 100. Посчитать сумму элементов 
        //    отдельно в каждой строке и определить номер строки, в которой эта сумма максимальна.




    }
}
